package com.assessment.repository;

import com.assessment.model.entity.AssessmentRecord;

import java.math.BigDecimal;
import java.util.List;

/**
 * 评测记录仓储接口
 */
public interface AssessmentRecordRepository {

    /**
     * 保存评测记录
     *
     * @param record 评测记录
     * @return 是否成功
     */
    boolean saveRecord(AssessmentRecord record);

    /**
     * 批量保存评测记录
     *
     * @param records 评测记录列表
     * @return 是否成功
     */
    boolean batchSaveRecords(List<AssessmentRecord> records);

    /**
     * 获取评测关系的评测记录
     *
     * @param relationId 关系ID
     * @return 评测记录列表
     */
    List<AssessmentRecord> getRecordsByRelationId(Integer relationId);

    /**
     * 获取教师在周期内的评测记录
     *
     * @param teacherId 教师ID
     * @param periodId  周期ID
     * @return 评测记录列表
     */
    List<AssessmentRecord> getTeacherRecords(Integer teacherId, Integer periodId);

    /**
     * 计算教师在周期内的平均分
     *
     * @param teacherId 教师ID
     * @param periodId  周期ID
     * @return 平均分
     */
    BigDecimal calculateTeacherAvgScore(Integer teacherId, Integer periodId);

    /**
     * 计算教师在周期内某类别的平均分
     *
     * @param teacherId  教师ID
     * @param periodId   周期ID
     * @param categoryId 类别ID
     * @return 平均分
     */
    BigDecimal calculateCategoryAvgScore(Integer teacherId, Integer periodId, Integer categoryId);
}
